1. Field of the Invention
The invention relates to information services, and more particularly, to systems, methods and articles of manufacture for allowing the set of content provided by an information service to be dynamically modified.
2. Description of the Related Art
The internet has become an important medium for information services and electronic commerce. As the internet was commercialized, organizations initially established their presence in cyberspace by making available relatively static information, including generalized descriptions of products and services. More recently, dynamic content has become popular. For example, electronic commerce sites now typically present product offerings and pricing information that varies over time. Similarly, internet news services offer news related content that is routinely updated. Search engines and portals similarly offer content that is updated over time. Often access is provided to time varying content through a relatively fixed set of interfaces resolved at runtime using technologies such as server side includes (SSI), Common Gateway Interface (CGI) scripts, Java(trademark) Servlets and Java Server Pages (JSP) implementations based on software available from Sun Microsystems, Inc. and Active Server Pages (ASP) implementations based on software available from Microsoft Corporation. Java and all Java-based marks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.
While sophisticated dynamic content has been provided using such technologies, typically the underlying implementation is fixed. In particular, implementing infrastructure, e.g., CGI scripts, servlets, JSP or ASP pages and embedded code, is typically static and dynamic content is provided using static infrastructure to access database content that is itself dynamic. Modifications to the CGI scripts, servlets, JSP or ASP pages and embedded code for accessing databases or other backend services such as credit card validation, search, payment settlement, order processing, etc. typically require code and HTML modifications, recompilation and new code releases. As a result, information services must typically be interrupted for addition, removal or change to a set of content providing components. Systems and methods are desired that allow content provider components to be added, removed or changed without base code recompilation, package installation or information service downtime.
Accordingly, techniques have been developed to provide dynamic management of content provider components. In particular, systems, methods and articles of manufacture have been developed to allow additions to, removals from and/or changes in the set of content providing components provided by an information service without interruption of the information service. Some configurations in accordance with the present invention, e.g., a content provider manager and desktop service described herein, provide for xe2x80x9cpluggablexe2x80x9d content that may be modified simply through (1) changes to the set of content provider components encoded in a repository therefor and (2) responsive changes in the set of instantiated content providers served by the configuration. In some configurations, a single repository provides a mechanism for additions to, removals from and/or changes in the set of content providing components served by multiple information service installations.
Although the techniques described herein are more generally applicable, they are particularly useful in implementations of dynamic content applications, including user customizable web portal and personalized desktop, e.g., webtop, applications, wherein a suite of content provider interfaces are provided and the content provider interfaces are separately supported, maintained, owned, licensed, etc. or provide content for which a given user or client application may be separately authorized, configured, enabled or licensed.
In one embodiment in accordance with the present invention, a method of modifying content served by a networked information service includes instantiating a set of one or more content provider classes, supplying a client application with content corresponding to the instantiated content providers, updating the set of instantiated content providers without interruption of the networked information service, and thereafter supplying the client application with content corresponding to the updated set of instantiated content providers. The set of instantiated content providers is based on encoded representations thereof in a content provider directory and the updated set of instantiated content providers is based on changes to content provider directory. In one variation, the updating includes, for each new content provider, instantiating a corresponding new class and adding the corresponding instantiated class to a list of content providers available to the networked information service. The updating further includes, for each removed content provider, destroying a corresponding previously instantiated class and removing the corresponding previously instantiated class from the list of content providers available to the networked information service.
In another embodiment in accordance with the present invention, a method of updating content served by an information resource without interrupting operation of the information resource includes: instantiating in accordance with a content repository, a set of software objects implementing respective content sources; adding to, and removing from, the set of instantiated software objects in correspondence with additions to, and deletions from, the content repository; and, in response to a request from a client application, selecting for execution those of the set of software objects consistent with associated user parameters; executing the selected software objects; and supplying the client application with content sourced from the selected software objects. The instantiated software objects are executable by the information resource without recompilation of the information resource and without a service interrupting restart thereof In one variation, the client application includes a web browser; the information resource includes a web portal and the content supplying includes organizing content from the selected software objects and supplying the organized content to the web browser as a web page.
In yet another embodiment in accordance with the present invention, a method of providing a dynamically variable set of content instances in an information resource environment includes predefining at least one repository for encoding one or more content instances of the set of content instances; instantiating, in response to addition to the set of content instances of an encoding for a first content instance, the first content instance within the information resource environment without interruption thereof; and thereafter, presenting the first content instance as part of the information resource environment. In one variation, the method further includes dissociating, in response to removal from the set of content instances of an encoding for a second content instance, the second content instance from the information resource environment without interruption thereof; and thereafter, presenting the information resource environment without the second content instance. In another variation, the method further includes reinstantiating, in response to modification of an encoding for a third content instance, the third instance within the information resource environment based on the modified encoding; and thereafter, presenting a modified third content instance as part of the information resource environment. The reinstantiating is without interruption of the information resource environment.
In still yet another embodiment in accordance with the present invention, a networked information system includes a content manager service responsive to client requests for access to content providers and means for updating a set of instantiated content providers in correspondence with changes in a repository therefor and without interrupting client request servicing by the content manager. The content manager instantiates the set of the content providers encoded in the repository.
In still yet another embodiment in accordance with the present invention, a computer program product encoded in at least one computer readable medium includes content provider manager code and information service code. The content provider manager code is executable on one or more computers as a content provider manager service to maintain a time-varying set of instantiated content provider objects in correspondence with a content provider repository. The information service code is executable to service incoming requests for information content. The interface code services the incoming requests with information content from the time-varying set of instantiated content provider objects. Changes to the time-varying set of instantiated content provider objects are supported without a service interrupting recompilation or restart of the information service code. In various variations, the information service code implements a web portal or a desktop service.